/*
Automatic clinic tests using a robot arm.
Copyright (C) 2010  CIC-CPC, CHU Gabriel Montpied
All other trademarks, logos and copyrights are the property
of their respective owners.

This file is part of cpc-painbot.

cpc-painbot is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

cpc-painbot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with cpc-painbot.  If not, see <http://www.gnu.org/licenses/>.
*/
#include "include/operation/choixdetermination.h"
#include "ui_choixdetermination.h"

#include "seuil/determination.h"
#include "seuil/methode.h"
#include "stimulation/stimulateur.h"

/*! Génère une liste de chaînes associées à des Types.
    La plupart des objets utilisés ont différents différents types, identifiables par des chaînes
    de caractères. Cette petite fonction permet de générer une telle liste et de l'insérer dans
    une QComboBox.
    \param cbox ComboBox où insérer les items.
*/
template<typename Objet>
static inline void genererListe(QComboBox *cbox)
{
    for (int i = 0; i < Objet::nbTypes; ++i) {
        typename Objet::Type type = typename Objet::Type(i);
        cbox->addItem(Objet::typeToString(type), type);
    }
}

ChoixDetermination::ChoixDetermination(QWidget *parent) :
    QWizardPage(parent),
    ui(new Ui::ChoixDetermination)
{
    ui->setupUi(this);

    registerField("determination", ui->determinationComboBox);
    registerField("methode", ui->methodeComboBox);
    registerField("stimulateur", ui->stimulateurComboBox);

    // Mise en place des différentes déterminations.
    genererListe<seuil::Determination>(ui->determinationComboBox);

    // Les différentes méthodes.
    genererListe<seuil::Methode>(ui->methodeComboBox);

    // Les différents stimulateurs.
    genererListe<Stimulateur>(ui->stimulateurComboBox);
}

ChoixDetermination::~ChoixDetermination()
{
    delete ui;
}

void ChoixDetermination::changeEvent(QEvent *e)
{
    QWizardPage::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
